package com.xja.interceptor;

import com.xja.exception.UnauthorizedException;
import com.xja.utils.UserContext;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.NotNull;
import org.springframework.web.servlet.HandlerInterceptor;

/**
 * 检查登录的上下文，对于特定的请求，检查是否他的token是否有效
 * 有效则放行，无效则拦截
 * 因为上个拦截器把有效的id都存到上下文了
 * 所以上下文中 有 就是有效，没有 就是无效
 * @author 蔡建国
 */
@RequiredArgsConstructor
public class UserLoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(@NotNull HttpServletRequest request,
                             @NotNull HttpServletResponse response,
                             @NotNull Object handler) {
        // 1. 若登录凭证无效就拦截
        if (UserContext.getUid() == null) {
            throw new UnauthorizedException("未登录，无权限！");
        }
        // 2. 有效就放行
        return true;
    }
}